iT邦幫忙

2022 iThome 鐵人賽

DAY 17
0
Software Development

Python派神,大顯神威!!系列 第 17

【Day17】:實作Python爬蟲取得股價資訊(七) +需求不明的夢靨+股價統計圖表matplotlib套件01

  • 分享至 

  • xImage
  •  

第11天的時候,我們為了小資族將業務流程轉為需求項目時,
還記得我說了什麼?
我們來回顧一下: 「先從以上5個步驟來看,從程式的角度是否都可做到?
再看一次,
應該沒什麼問題。
但,說到Step5這個「檢閱」,那學問可大著呢。」

這時候問題就來了,
我們想像一下,原本需求的窗口是一個專員;
對於工作有著熱忱且按時程來看從前面幾天我們也都達到需求提到的各個項目,
且我們也解釋若需要檢視股價就看存檔下來的數據資料,
因此專員對於此案正準備開始與廠商辦理結案程序時,
客戶方的董事長這時候語重心長地說了一句,
「如果這個讓決策者用要怎麼看這個股價資訊啊?廠商還會提供BI軟體整合嗎?」

這時候,廠商的業務驚覺當初已經量化的需求,竟然還有不夠明確之處,
讓原本要買自行車預算的小案子,在預算不變的前提下,
突然轉向賓士的需求….。
話說,要是我的話有多少成本做多少事,
畢竟一分錢一分貨,
正準備上白板據理力爭說個分明時,
我的後腳跟被業務踩住了,
挖哩! 我的名牌皮鞋竟然後端開口笑了,難道是假貨….。
正在糾結分神之餘業務出聲了:「好的,細節作法我們下次說明。」

哦!買尬的~又是你業務豪爽我技術買單。(此時我心裡正滴咕著)
回去業務跟我曉以大義:「你知道你為何最有本事最認真,升得比其他人慢嗎?」
這個案子在需求確認時有小瑕疵,我們自己理虧,且這個客戶可以讓我們吃五~十年不為過,
「你這麼能講道理,你想我們兩回家吃自己嗎?」

我心裡還在暗自竊喜那句:「你知道你...最有本事最認真。。。」
之際,業務說了:「這個案子搞定,你想當經理有人敢跟你搶嗎?」
唉!寄人籬下哪有不低頭。我只好回答:「我回去評估一下最合於目前成本的解決方案吧!」
(心裡卻想著,唉!大意了,又被捧高高給賣了...)別笑,這可能是職場上的一個縮影。

談到職場的一個需求不明確的情境忍不住悲從中來,
獨悵然而涕下。
好啦!該辦正事啦!
今天我們來看看怎麼在有限預算下達成使命。

若要Python出馬來顯示(展示)股價,
成本最適考量當然是使用matplotlib套件的pyplot模組啦!

(一) 使用pyplot模組

matplotlib是Python語言及其數值計算庫NumPy的繪圖庫。它提供了一個物件導向的API,用於使用通用GUI工具包(如Tkinter、wxPython、Qt或GTK)將繪圖嵌入到應用程式中。

pyplot是matplotlib的一個模塊,它提供了一個類似MATLAB的接口。 Matplotlib被設計成與MATLAB一樣可用,能夠使用Python,並且具有自由開源的優點。

matplotlib最初由John D. Hunter撰寫,從此它擁有一個活躍的開發社區,並根據BSD許可證發布。 在John D. Hunter於2012年8月去世前不久,Michael Droettboom被提名為matplotlib的主要開發者,Thomas Caswell也加入了他的行列。

Matplotlib 2.0.x支持Python 2.7到3.10版本。Matplotlib 1.2是第一個支持Python 3.x的版本。Matplotlib 1.4是支持Python 2.6的最後一個版本。Matplotlib已簽署Python 3聲明,承諾在2020年後不再支持Python 2。

我們就來看看pyplot模組的厲害,參考如下:(以下程式碼都可複製貼上存為*.py檔即可執行)
會提供程式碼,主要希望大家對於Python能經由日積月累的接觸來漸漸熟識。

1. 餅圖
https://ithelp.ithome.com.tw/upload/images/20221002/20141198mjMHI30XyD.png

import matplotlib.pyplot as plt
import numpy as np

y = np.array([15, 25, 30, 30])

plt.pie(y)
plt.show()

2. 曲線圖
https://ithelp.ithome.com.tw/upload/images/20221002/20141198aiYDmImFjO.png

import matplotlib.pyplot as plt
import numpy as np

a = np.linspace(0,10,100)
b = np.exp(-a)
plt.plot(a,b)
plt.show()

3. 直方圖
https://ithelp.ithome.com.tw/upload/images/20221002/20141198WxrY7RHrkW.png

import matplotlib.pyplot as plt
from numpy.random import normal

x = normal(size=200)
plt.hist(x,bins=30)
plt.show()

4. 散點圖
https://ithelp.ithome.com.tw/upload/images/20221002/20141198Xtic664z9H.png

import matplotlib.pyplot as plt
from numpy.random import rand

a = rand(100)
b = rand(100)
plt.scatter(a,b)
plt.show()

5. 3D圖
https://ithelp.ithome.com.tw/upload/images/20221002/20141198gpQRvpjyVg.png

from matplotlib import cm
import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure()
ax = fig.gca(projection='3d')
X = np.arange(-5, 5, 0.25)
Y = np.arange(-5, 5, 0.25)
X, Y = np.meshgrid(X, Y)
R = np.sqrt(X**2 + Y**2)
Z = np.sin(R)
surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1,cmap=cm.coolwarm)
plt.show()

回歸到股價資訊的視覺化呈現要如何使用呢?我們接著看下去。

(二) 本次運用的方式說明
pyplot模組進行繪圖時一般的步驟如下:

  1. 準備資料:將要繪圖的資料準備好。
  2. 新建plot物件:pyplot中繪圖就要先建立plot物件,之後的繪圖指令都將在plot物件上進行操作。
  3. 進行繪圖:在plot物件上面輸入繪圖指令。
  4. 顯示圖形:顯示繪製好的圖形。

寫到這兒滿足了嗎?當然還沒,
由於細部還需要拆解跟大家說明並細細道來,
為避免大家消化不良,今天就到這兒,我們明天再繼續。


上一篇
【Day16】:實作Python爬蟲取得股價資訊(六) +股價資訊檔案讀取
下一篇
【Day18】:實作Python爬蟲取得股價資訊(八) +股價統計圖表matplotlib套件02
系列文
Python派神,大顯神威!!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言